Grundregeln für das Arbeiten

In diesem Artikel:

Falls Sie Details zu einem Punkt benötigen, klicken Sie auf den danebenstehenden Link. Dadurch gelangen Sie zu einem Artikel, in dem üblicherweise der Punkt durch eine Warnung oder einen Hinweis präzisiert wird (siehe "Benutzerdokumentation der Entwicklungsumgebung, Version 3.25.0" für Informationen zu den Darstellungskonventionen für Warnungen/Hinweise).
Falls Sie weitere Fragen zu einem Punkt haben und keine Informationen in der Benutzerdokumentation von Neuron Power Engineer finden, kontaktieren Sie das Support-Team von Neuron.

Andere nützliche Links:

Schritt-für-Schritt-Anleitungen
vom Installieren bis zum Testen Ihrer ersten Anwendung

Kurzanleitungen

weitere Aktionen

Referenzdokumentation

schnelles Suchen in der Benutzerdokumentation

Wie finde ich schnell einen bestimmten Befehl?

Beim Installieren

Beachten Sie:

Details unter:

keine Sonderzeichen im Installationspfad von Neuron Power Engineer

Installieren

kein Installationspfad inkl. Pfad des Compilers, der mehr als 255 Zeichen hat

Installieren

Bei Zielsystemen zusätzlich zu beachten:

falls Raspberry Pi als SPS verwendet wird:

zu installierende Version für →Laufzeitsystem

Für Kurzanleitung benötigte Hardware/Software

falls ein 64-Bit-System von Linux verwendet wird:

bestimmte Befehle im Terminal-Fenster ausführen

64 Bit Linux

Beim Starten

Beachten Sie:

Details unter:

Zugriff zulassen, falls Windows-Sicherheitshinweise angezeigt werden

Entwicklungsumgebung und Laufzeitumgebung starten

je einen neuen Arbeitsbereich pro Start von Neuron Power Engineer verwenden (außerhalb des Installationsverzeichnisses von Neuron Power Engineer)

Entwicklungsumgebung und Laufzeitumgebung starten,
Arbeitsbereich wählen/wechseln

Neuron Power Engineer in anderer Sprache starten

Wie ändere ich die Sprache für die Benutzeroberfläche?,
Elemente und Meldungen nach Start in englischer Sprache

Beim Erstellen von Projekten

Beachten Sie:

Details unter:

Keine Leerzeichen und Sonderzeichen im Projektnamen und der Position

Neues Projekt erstellen

Projekte nicht im Arbeitsbereich erstellen

Neues Projekt erstellen 

verlinkte Ordner nach Importieren zu "eigentlichen" Ordner geworden

Projekt importieren

Beim Arbeiten im Projektexplorer

Beachten Sie:

Details unter:

→Bibliotheken nicht manipulieren

Mit Projektexplorer verwalten

Dateierweiterungen nicht ändern

Ressourcen umbenennen

Verlinkte Ordner in Archivdatei nicht mitexportieren

Ressourcen exportieren

Änderungen außerhalb Neuron Power Engineer – Aktualisierung erforderlich

Über Status der SPS informieren,
Wann ist die auf die SPS geladene Anwendung nicht mehr aktuell?

Blenden Sie die Ordner src-gen oder target nur für Problembehebungen ein.

für allgemeine Informationen: Mit Projektexplorer verwalten
für Anweisungen zum Einblenden der Ordner: Sind meine Projekte aufwärts- und abwärtskompatibel?

Beim Erstellen der Anwendung

Allgemeine Programmierrichtlinien

Keine Erkennung von Endlosschleifen bzw. von fehlenden Abbruchbedingungen

Endlosschleifen sowie fehlende Abbruchbedingungen werden Neuron Power Engineer von nicht erkannt. Achten Sie auf korrekte Abbruchbedingungen (z.B. mit Hilfe von IF-Anweisungen), mit denen Endlosschleifen verhindert werden.

Beispiel für Endlosschleife ohne Abbruchbedingung

Beispiel für Endlosschleife mit einer Abbruchbedingung

 
PROGRAM Test1
    MyFun(1);
END_PROGRAM
 
FUNCTION MyFun
    VAR_INPUT
        In : INT;
    END_VAR
 
        MyFun(In + 1);
 
END_FUNCTION

Falls Sie solche Anwendungen auf die SPS dennoch laden, wird u.U. das →Laufzeitsystem beendet. In diesem Fall erscheint ein Fenster mit diesem Text: RTSLoader.exe stopped workingLösungen finden Sie im Troubleshooting-Artikel: Die SPS ist nicht ansprechbar. Das Laufzeitsystem reagiert langsam oder gar nicht.

PROGRAM Test1
    MyFun(1);
END_PROGRAM
 
FUNCTION MyFun
    VAR_INPUT
        In : INT;
    END_VAR
    IF In < 10 THEN
        MyFun(In + 1);
    END_IF;
END_FUNCTION

 

Keine Prüfung von Rekursionen

Rekursionen bei →Funktionen und →Methoden werden von Neuron Power Engineer nicht verboten oder geprüft. Erstellen Sie trotzdem keine Selbstaufrufe und vermeiden Sie einen gegenseitigen Aufruf von 2 (oder mehr) Funktionen/Methoden in Ihrer Anwendung. 
Beachten Sie, dass Rekursionen von Funktionen/Methoden in Ihrer Anwendung unerwartete Ereignisse beim Ausführen der Anwendung verursachen können. So könnte die Anwendung in einer Endlosschleife ausgeführt werden und/oder das →Laufzeitsystem reagiert nicht mehr.

(Info) Im Gegensatz dazu werden Rekursionen bei →Funktionsbausteinen erkannt und als fehlerhaft markiert.

Beim Erstellen der Anwendung in ST

Beachten Sie:

Details unter:

keine Prüfung von ungültigen Beschaltungen durch Neuron Power Engineer

(z.B. bei der Verwendung von Numeric-Funktionen, wie z.B. des EXPT-Bausteins, aber auch bei Verwendung des MUL_TIME-Bausteins)

Numeric-Funktionen
(z.B. EXPT-Baustein und MUL_TIME-Baustein)


keine Schlüsselwörter für Bezeichner verwenden

Reservierte Schlüsselwörter in ST

aktuell unterstützte ST-Elemente

Artikel im Abschnitt "Unterstützte ST-Syntax"

Ausdrücke mit über 20 Operanden/Operatoren beeinflussen die Performance.

Ausdrücke in ST

beim Zuweisen von Ausdrücken: keine Erkennung von mathematischen Fehlern

Ausdrücke in ST

Folgende ST-Elemente werden mit Einschränkungen unterstützt:

  • direkt abgeleitete Datentypen (z.B. max. 10 Ebenen für Verschachtelungen)

  • ARRAY-Datentyp (keine Referenz-Typen, ARRAY-Datentypen mit bis zu 4 Dimensionen,
    keine Prüfung bei Verwendung von Variablen und/oder Operatoren für ARRAY-Indizes)

  • strukturierter Datentyp (keine Initialisierung bei Funktionsbausteinen, keine Referenzen auf Funktionsbausteine)

  • ARRAY-Variablen (wie ARRAY-Datentyp)

  • Referenz-Variablen (z.B. keine Referenzen auf Typ eines Funktionsbausteins)

  • CASE-Anweisung (nur ANY_INT-Ausdrücke für den Selektor)

 

Verschiedenes für die Verwendung von Ein-/Ausgangsvariablen (= VAR_IN_OUT)

Deklaration von Ein-/Ausgangsvariablen in ST

Bei STRING-Variablen:

  • maximale Länge = 32.767

  • Zeichenkombination '$00' beendet die Zeichenfolge einer STRING-Variable.

Deklaration von STRING-Variablen (inkl. Zugriff)

keine Erkennung von Endlosschleifen bei REPEAT- und WHILE-Anweisungen

WHILE-Anweisung in ST, REPEAT-Anweisung in ST

Folgende Datentypen werden nicht unterstützt:

LTIMEWSTRING,  WCHARLDATE_AND_TIME, LTIME_OF_DAY und LDATE

→allgemeine Datentypen

Ungenauigkeiten bei Gleitkommazahlen (REAL- und LREAL-Werte)

Unterstützte Datentypen (in ST)

Je nach dem verwendeten Zielsystem:

Beachten Sie:

Details unter:

Andere verfügbare Systembausteine

  • Zielsystem-abhängige Bausteine für die Anwendung

  • Weitere Systembausteine

 

Beim Erstellen der Anwendung in FBS

Beachten Sie:

Details unter:

Deklaration einer POE in einem FBS-Objekt möglich

POE in FBS erstellen

andere angezeigte Farben für Datentypen und/oder anders angezeigte FBS-Elemente (als in der IDE-Dokumentation illustriert)

Farbe/Stil für FBS-Elemente durch Datentyp bestimmt

Beachten Sie auch die Punkte unter "Beim Erstellen der Anwendung in ST". Diese können auch für eine FBS-Logik gelten.

Beim Erstellen der Anwendung in KOP

Beachten Sie:

Details unter:

Deklaration einer POE in einem FBS-Objekt möglich

POE in KOP erstellen

Kontakte/Spulen, die nicht in Funktionen zur Verfügung stehen

Kontakte in KOP und Spulen in KOP

Beachten Sie auch die Punkte unter "Beim Erstellen der Anwendung in ST". Diese können auch für einen Kontaktplan gelten.

Beim Erstellen von Bausteinen mit C-Code

Mögliche Probleme für eine Anwendung durch Namenskonflikte im C-Code (z.B. bei Vendor-Bausteine und Import eines Simulink-Modells).

Falls Sie nicht-eindeutige Namen im →C-Code verwenden und diese sind im globalen Namespace verfügbar, ist es möglich, dass Konflikte bei der Verwendung von mehreren Bausteinen mit solchem C-Code verursacht werden. Diese Konflikte verursachen jedoch nicht immer Fehler/Warnungen beim Erstellen der Anwendung. In Folge ist es möglich, dass das Laufzeitverhalten auf eine unerwünschte Weise beeinflusst wird.
Beispiel: Die Sicht Variablenwerte zeigt 2 Variablen, denen der Ergebniswert von POU1 bzw. POU2 zugewiesen ist. Der Wert für Program1.rc2 zeigt den unerwarteten Wert 1, während im C-Code tatsächlich der Wert 2 zugewiesen ist. Das Problem wird aufgrund des gleichen Namen RESULT im C-Code der 2 Vendor-Bausteine POU1 bzw. POU2 verursacht. 

Zusätzliche Information: Dieses Problem betrifft:

  • →Vendor-Bausteine, die Sie selbst erstellen

  • Vendor-Bausteine, die beim Import eines Simulink-Modells erstellt werden

  • Vendor-Bausteine, die beim Migrieren des Vorgängerprodukts logi.CAD/32 auf Neuron Power Engineer erstellt werden

  • Bausteine mit C-/C++-Code, die Sie auf Basis einer ST-Schnittstelle erstellen (siehe "Schnittstelle für C-Baustein oder C++-Baustein erstellen (Deprecated)")

    Abhilfe 1: Verwenden Sie POE-eindeutige Namen (wenn möglich, sogar projekt- und POE-eindeutig) für alle C-Identifier, die in einem globalen Namespace verfügbar sind. Falls Sie ein Simulink-Modell importieren, verwenden Sie am besten die eindeutigen Namen bereits im Simulink-Modell.
    Abhilfe für das obige Beispiel: Die Sicht Variablenwerte zeigt nun den erwarteten Wert 2 für Program1.rc2, da nun POE-eindeutige Namen im C-Code verwendet werden.

    Abhilfe 2: Falls Sie die Bausteine mit C-Code in einer Bibliothek zur Verfügung stellen, geben Sie die Bausteine in der Bibliothekskonfiguration mit DEPLOY:=OBJECT an (siehe unter "Deklaration des Inhalts für die Bibliothek" für Details zu DEPLOY:=OBJECT). In Folge wird beim Erstellen der Bibliothek der Binärcode für die POE getrennt erstellt.

Verwendete Systembausteine

Genauigkeit und Verhalten von mathematischen Funktionen

Mathematische Funktionen, die Gleitkommazahlen (REALLREAL) verarbeiten, können unterschiedliche Ergebnisse auf den unterschiedlichen Zielsystem liefern – vor allem, wenn das Ergebnis der Funktion im Grenzbereich des Datentyps liegt. Diese unterschiedliche Genauigkeit der mathematischen Funktionen wird durch die folgenden Faktoren verursacht:

  • das →Zielsystem selbst,

  • der dafür verwendete Compiler und

  • die konfigurierten Optimierungseinstellungen des Compilers.

Bausteine/Variablen mit LREAL nicht für Controllino oder Arduino Nano verwenden

Falls Sie eine Anwendung für einen →Controllino oder →Arduino Nano erstellen, vermeiden Sie die Verwendung von Bausteinen/Variablen, die LREAL-Werte verarbeiten/liefern. Die Verwendung solcher Bausteine/Variablen ist zwar möglich, die LREAL-Werte werden jedoch mit der Genauigkeit von REAL-Werten abgearbeitet.

Beachten Sie, dass der DIV_TIME-Baustein intern immer mit LREAL-Werten arbeitet.

Verhalten von Konvertierungsbausteinen bei nicht-übereinstimmendem Wertbereich

TRUNC-Bausteine und andere Konvertierungsbausteine mit einem REAL/LREAL-Eingang können ebenfalls unterschiedliche Ergebnisse für unterschiedliche Compiler auf den unterschiedlichen Zielsystemen liefern, wenn der anliegende Wert nicht im gemeinsamen Wertbereich des Eingangsdatentyps und des Datentyps für den Ergebniswert liegt. Diese unterschiedliche Ergebnisse werden durch die folgenden Faktoren verursacht:

  • der dafür verwendete Compiler und

  • das →Zielsystem selbst

    Geben Sie deshalb Code in Ihrer Anwendung ein (z.B. IF-Anweisungen im ST-Code), mit denen so ein nicht-übereinstimmender Wertbereich erkannt wird. Informieren Sie sich unter "Convert-Funktionen" und "ConvertEnh-Funktionen" nach, welche der Konvertierungsbausteine einen REAL/LREAL-Eingangsdatentyp unterstützen.

Bekannte Beispiele:

Zielsystem

Ergebnis der mathematischen Funktion TRUNC_DINT(REAL#3.402823466e+38);

→Laufzeitsystem für Windows

-2147483648

→Raspberry Pi

2147483647

RTOS32-Compiler

-2147483648

Der RTOS32-Compiler meldet einen Fehler, wenn die Anwendung eine bestimmte Division enthält.

Falls Sie den RTOS32-Compiler verwenden, vermeiden Sie eine bestimmte Division (siehe das folgende Beispiel) in der Anwendung.

Beispiel für ST-Code 
PROGRAM Program1
  DIV(DINT#-2_147_483_648, DINT#-1);
END_PROGRAM

Beim Erstellen der Anwendung melden die Compiler die erwartete Warnung overflow in constant division, undefined behavior. Der RTOS32-Compiler meldet jedoch auch einen Fehler divide or mod by zero. Andere Compiler akzeptieren den Code – nur die erwähnte Warnung wird gemeldet. Damit der Fehler beim RTOS32-Compiler nicht gemeldet wird, dürfen Sie eine Division mit den oben erwähnten negativen Integers nicht in der Anwendung verwenden.

Beachten Sie: Details unter:

Systembausteine, basierend auf der →IEC-Norm aber mit Einschränkungen:

  • Bitstring-Funktionen: SHL, SHR, ROL, ROR

  • Compare-Funktionen: EQ, GE, GT, LE, LT, NE

  • Convert-Funktionen: TO_BOOLTO_DWORDTO_LREALTO_LWORDTO_REALTO_TIMETO_WORD

  • Numeric-Funktionen: ADDDIVEXPTMODMOVEMULSUB

  • Select-Funktionen: LIMIT, MAX, MIN, MUX_BYTE, MUX_DINT,
    MUX_DWORD, MUX_INT, MUX_SINT, MUX_UDINT,
    MUX_UINT, MUX_USINT, MUX_WORD, SEL

  • String-Funktionen: CONCAT, DELETE, FIND, INSERT, LEN, LEFT, MID, REPLACE, RIGHT

  • Time-Funktionen: ADD_TIMECONCAT_DATE_TODMUL_TIMESUB_DT_DTSUB_TIME

 

 

Systembausteine, basierend auf der →IEC-Norm aber mit Erweiterungen:

  • Bitstring-Funktionen: ROLRORSHLSHR

  • Convert-Funktionen: TO_BOOL, TO_BYTE, TO_DINT,
    TO_DWORDTO_INTTO_LINTTO_LREALTO_LWORD,
    TO_REALTO_SINTTO_UDINTTO_UINTTO_ULINT,
    TO_USINTTO_WORD

  • Counter-Funktionsbausteine: CTD_UINT, CTU_UINT, CTUD_UINT

  • Numeric-Funktionen: EXPT

  • Select-Funktionen: MUX_BYTEMUX_DINTMUX_DWORDMUX_INTMUX_SINTMUX_UDINTMUX_UINTMUX_USINTMUX_WORD

 

Systembausteine in Erweiterung der →IEC-Norm:

  • erweiterte Bitstable-Funktionsbausteine

  • erweiterte Bitstring-Funktionen

  • erweiterte Control-Funktionsbausteine

  • erweiterte Convert-Funktionen

  • erweiterte Numeric-Funktionen

  • erweiterte Select-Funktionen

  • erweiterte Timer-Funktionsbausteine

  • erweiterte Memory-Funktionen

 

Beim Definieren von Einstellungen für die SPS

Beachten Sie:

Details unter:

max. 32 Tasks pro Ressource

Mehrere Tasks im SPS-Objekt deklarieren

Einschränkungen bei der Ausführung von mehreren Programmtypen

Mehrere Programmtypen zuordnen (= neue Instanzen erstellen)

Einschränkungen für VAR_CONFIG-Abschnitte

VAR_CONFIG-Abschnitte im SPS-Objekt deklarieren

Beim Testen der Anwendung

Beachten Sie:

Details unter:

Anzeige in Sicht Instanzen: nur Basis-Typ für ARRAY-Variablen

Variablen einfügen und Werte beobachten

Wert für Variable ändern ≠ Forcen

Wert für Variable ändern (Wert auf SPS schreiben)

eingesetztes Zielsystem beeinflusst evtl. in Neuron Power Engineer eingegebene/dargestellte Literale

Anwendung testen oder Daten debuggen

Bei Zielsystemen zusätzlich zu beachten:

Standard-Timer-Auflösung für Linux-Betriebssysteme

Zykluszeit im SPS-Objekt eingeben

Beim Debuggen der Anwendung

Beachten Sie:

Details unter:

  • Das Debuggen ist nur für Anwendungen möglich, die auf die integrierte SPS geladen sind.

  • Änderungen der Source-Dateien (während der Debugging-Sitzung) können unerwartete "Sprünge" in der Debugging-Sitzung verursachen.

Kontrollfluss-Debuggen: Anwendung mit Unterbrechungspunkten debuggen

  • Die Debugging-Sitzung muss beendet werden, bevor Neuron Power Engineer beendet wird.

  • Durch das Beenden der Debugging-Sitzung wird die integrierte SPS automatisch gestoppt.

Debugging beenden

Beim Erstellen der Anwendung in →C oder →C++

Beachten Sie:

Details unter:

beim Erstellen von Projekten eine andere Position für C/C++-Projekte verwenden

Der gleiche Ordner beim Erstellen eines C-/C++-Projekts verursacht Probleme

  • Geänderte Schnittstellen für C-/C++-Funktionen ohne Anpassungen verursachen Fehler beim Laden auf SPS.

  • Kommentare in C-Bausteinen nicht im C++-Stil eingeben.

Beim Verwenden eines Raspberry Pis

Beachten Sie:

Details unter:

Voraussetzungen für SD-Karte

Für Raspberry-Pi-Kurzanleitung benötigte Hardware/Software

zu installierende Version für Laufzeitsystem

Für Raspberry-Pi-Kurzanleitung benötigte Hardware/Software

Spannungsversorgung für Raspberry Pi

Raspberry Pi zusammenstecken und IP-Adresse ermitteln

Standardeinstellung en_GB.UTF-8 UTF-8 aktiviert

Raspberry Pi konfigurieren

bei Datenübertragung via MQTT: Verbindung für TCP-Port steuern

Datenübertragung via MQTT vorbereiten/durchführen

Standard-Timer-Auflösung für Linux-Betriebssysteme (z.B. Raspbian)

Zykluszeit im SPS-Objekt eingeben

Bei Zugriff auf Hardware-IOs via EC-Master und EC-Engineer

Beachten Sie:

Details unter:

beim Vorbereiten der Umgebung: Voraussetzungen für Netzwerkkarte

Umgebung für Zugriff auf Hardware-IOs vorbereiten

Laufzeitsystem unter Windows installieren (enthält eine Evaluierungsversion des EC-Masters)

Umgebung für Zugriff auf Hardware-IOs vorbereiten

Keine der Ressource-globalen Variablen ändern

Auf Hardware-IOs via EC-Engineer zugreifen

Beim Ändern des Layouts

Beachten Sie:

Details unter:

unterschiedliche Schritte zum Verschieben/Andocken von Sichten/Editoren
(sofern diese außerhalb von Neuron Power Engineer liegen)

Sichten und Editoren verschieben oder andocken,
Fenster nach dem Verschieben verschwunden

Performance

Beachten Sie:

Details unter:

bei Problemen mit der Performance

Was kann ich tun, um die Performance zu erhöhen?